//+build !noasm !appengine arm64


TEXT ·_and_neon(SB), $0-32
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD size+24(FP),R3
WORD $0x7100087f //CMPW $2, R3
WORD $0x54000163 //BCC 11(PC)
WORD $0x53017c68 //LSRW $1, R3, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff61 //BNE -5(PC)
WORD $0x121f7868 //ANDW $4294967294, R3, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54000742 //BCS 58(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000069 //ORRW $1, R3, R9
WORD $0x4b090069 //SUBW R9, R3, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540005a3 //BCC 45(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000a //ADD R11, R0, R10
WORD $0x8b09010c //ADD R9, R8, R12
WORD $0xd37df18c //LSL $3, R12, R12
WORD $0x9100218c //ADD $8, R12, R12
WORD $0x8b0c000d //ADD R12, R0, R13
WORD $0x8b0b002e //ADD R11, R1, R14
WORD $0x8b0c002f //ADD R12, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0c004c //ADD R12, R2, R12
WORD $0xeb0f015f //CMP R15, R10
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x0a0e01ee //ANDW R14, R15, R14
WORD $0xeb0c015f //CMP R12, R10
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x3700032e //TBNZ $0, R14, 25(PC)
WORD $0x0a0c014a //ANDW R12, R10, R10
WORD $0x370002ea //TBNZ $0, R10, 23(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004b //ADD R11, R2, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03ee //MOVD R10, R14
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf10011ce //SUBS $4, R14, R14
WORD $0x54fffee1 //BNE -9(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000120 //BEQ 9(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0x8a0a016a //AND R10, R11, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54ffff23 //BCC -7(PC)
WORD $0xd65f03c0 //RET



TEXT ·_and_v3_neon(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD size+32(FP),R4

WORD $0x7100089f //CMPW $2, R4
WORD $0x540001e3 //BCC 15(PC)
WORD $0x53017c88 //LSRW $1, R4, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff01 //BNE -8(PC)
WORD $0x121f7888 //ANDW $4294967294, R4, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54000942 //BCS 74(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000089 //ORRW $1, R4, R9
WORD $0x4b090089 //SUBW R9, R4, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000763 //BCC 59(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000c //ADD R11, R0, R12
WORD $0x8b09010a //ADD R9, R8, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a000e //ADD R10, R0, R14
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b0a002f //ADD R10, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0065 //ADD R11, R3, R5
WORD $0x8b0a0066 //ADD R10, R3, R6
WORD $0xeb0f019f //CMP R15, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e01bf //CMP R14, R13
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0x0a0d014f //ANDW R13, R10, R15
WORD $0xeb11019f //CMP R17, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e021f //CMP R14, R16
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb06019f //CMP R6, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb0e00bf //CMP R14, R5
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x3700042f //TBNZ $0, R15, 33(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x370003ea //TBNZ $0, R10, 31(PC)
WORD $0x0a0e018a //ANDW R14, R12, R10
WORD $0x370003aa //TBNZ $0, R10, 29(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x910041ce //ADD $16, R14, R14
WORD $0x8b0b006b //ADD R11, R3, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03ef //MOVD R10, R15
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x9100818c //ADD $32, R12, R12
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf10011ef //SUBS $4, R15, R15
WORD $0x54fffe61 //BNE -13(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000160 //BEQ 11(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xf869686c //MOVD (R3)(R9), R12
WORD $0x8a0a016a //AND R10, R11, R10
WORD $0x8a0c014a //AND R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54fffee3 //BCC -9(PC)
WORD $0xd65f03c0 //RET



TEXT ·_and_v4_neon(SB), $0-48
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD size+40(FP), R5
WORD $0xa9be57f6 //STP.W (R22, R21), -32(RSP)
WORD $0xa9014ff4 //STP (R20, R19), 16(RSP)
WORD $0x710008bf //CMPW $2, R5
WORD $0x54000263 //BCC 19(PC)
WORD $0x53017ca8 //LSRW $1, R5, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffea1 //BNE -11(PC)
WORD $0x121f78a8 //ANDW $4294967294, R5, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54000b42 //BCS 90(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000a9 //ORRW $1, R5, R9
WORD $0x4b0900a9 //SUBW R9, R5, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000923 //BCC 73(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000e //ADD R11, R0, R14
WORD $0x8b09010a //ADD R9, R8, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0010 //ADD R10, R0, R16
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0066 //ADD R11, R3, R6
WORD $0x8b0a0067 //ADD R10, R3, R7
WORD $0x8b0b0093 //ADD R11, R4, R19
WORD $0x8b0a0094 //ADD R10, R4, R20
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb10019f //CMP R16, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0155 //ANDW R12, R10, R21
WORD $0xeb1101df //CMP R17, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb1001ff //CMP R16, R15
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb1000df //CMP R16, R6
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb1401df //CMP R20, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb10027f //CMP R16, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0x37000535 //TBNZ $0, R21, 41(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x370004ea //TBNZ $0, R10, 39(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x370004aa //TBNZ $0, R10, 37(PC)
WORD $0x0a1001ca //ANDW R16, R14, R10
WORD $0x3700046a //TBNZ $0, R10, 35(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x910041ce //ADD $16, R14, R14
WORD $0x8b0b008f //ADD R11, R4, R15
WORD $0x910041ef //ADD $16, R15, R15
WORD $0x8b0b006b //ADD R11, R3, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03f0 //MOVD R10, R16
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf1001210 //SUBS $4, R16, R16
WORD $0x54fffde1 //BNE -17(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x540001a0 //BEQ 13(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0x8a0a016a //AND R10, R11, R10
WORD $0xf869686b //MOVD (R3)(R9), R11
WORD $0xf869688c //MOVD (R4)(R9), R12
WORD $0x8a0b014a //AND R11, R10, R10
WORD $0x8a0c014a //AND R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54fffea3 //BCC -11(PC)
WORD $0xa9414ff4 //LDP 16(RSP), (R20, R19)
WORD $0xa8c257f6 //LDP.P 32(RSP), (R22, R21)
WORD $0xd65f03c0 //RET


TEXT ·_and_v5_neon(SB), $0-56
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD size+48(FP), R6
WORD $0xa9bd5ff8 //STP.W (R24, R23), -48(RSP)
WORD $0xa90157f6 //STP (R22, R21), 16(RSP)
WORD $0xa9024ff4 //STP (R20, R19), 32(RSP)
WORD $0x710008df //CMPW $2, R6
WORD $0x540002e3 //BCC 23(PC)
WORD $0x53017cc8 //LSRW $1, R6, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffe41 //BNE -14(PC)
WORD $0x121f78c8 //ANDW $4294967294, R6, R8
WORD $0x6b06011f //CMPW R6, R8
WORD $0x54000e62 //BCS 115(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000c9 //ORRW $1, R6, R9
WORD $0x4b0900c9 //SUBW R9, R6, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000ae3 //BCC 87(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b0010 //ADD R11, R0, R16
WORD $0x8b09010a //ADD R9, R8, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0007 //ADD R10, R0, R7
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x8b0a004f //ADD R10, R2, R15
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b0a0073 //ADD R10, R3, R19
WORD $0x8b0b0094 //ADD R11, R4, R20
WORD $0x8b0a0095 //ADD R10, R4, R21
WORD $0x8b0b00b6 //ADD R11, R5, R22
WORD $0x8b0a00b7 //ADD R10, R5, R23
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb07019f //CMP R7, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0158 //ANDW R12, R10, R24
WORD $0xeb0f021f //CMP R15, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb13021f //CMP R19, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb07023f //CMP R7, R17
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb07029f //CMP R7, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb17021f //CMP R23, R16
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb0702df //CMP R7, R22
WORD $0x1a9f27e7 //CSETW LO, R7
WORD $0x37000638 //TBNZ $0, R24, 49(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x370005ea //TBNZ $0, R10, 47(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x370005aa //TBNZ $0, R10, 45(PC)
WORD $0x0a1101ca //ANDW R17, R14, R10
WORD $0x3700056a //TBNZ $0, R10, 43(PC)
WORD $0x0a07020a //ANDW R7, R16, R10
WORD $0x3700052a //TBNZ $0, R10, 41(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x910041ce //ADD $16, R14, R14
WORD $0x8b0b00af //ADD R11, R5, R15
WORD $0x910041ef //ADD $16, R15, R15
WORD $0x8b0b0070 //ADD R11, R3, R16
WORD $0x91004210 //ADD $16, R16, R16
WORD $0x8b0b008b //ADD R11, R4, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03f1 //MOVD R10, R17
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad7f8e02 //FLDPQ -16(R16), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0x91008210 //ADD $32, R16, R16
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf1001231 //SUBS $4, R17, R17
WORD $0x54fffd61 //BNE -21(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000300 //BEQ 24(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df10f //LSL $3, R8, R15
WORD $0x8b0f000a //ADD R15, R0, R10
WORD $0x8b0f00ab //ADD R15, R5, R11
WORD $0x8b0f008c //ADD R15, R4, R12
WORD $0x8b0f006d //ADD R15, R3, R13
WORD $0x8b0f004e //ADD R15, R2, R14
WORD $0x8b0f002f //ADD R15, R1, R15
WORD $0xd37df130 //LSL $3, R9, R16
WORD $0xf87069f1 //MOVD (R15)(R16), R17
WORD $0xf87069c0 //MOVD (R14)(R16), R0
WORD $0x8a110011 //AND R17, R0, R17
WORD $0xf87069a0 //MOVD (R13)(R16), R0
WORD $0x8a000231 //AND R0, R17, R17
WORD $0xf8706980 //MOVD (R12)(R16), R0
WORD $0x8a000231 //AND R0, R17, R17
WORD $0xf8706960 //MOVD (R11)(R16), R0
WORD $0x8a000231 //AND R0, R17, R17
WORD $0xf8306951 //MOVD R17, (R10)(R16)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090110 //ADDW R9, R8, R16
WORD $0x6b06021f //CMPW R6, R16
WORD $0x54fffe43 //BCC -14(PC)
WORD $0xa9424ff4 //LDP 32(RSP), (R20, R19)
WORD $0xa94157f6 //LDP 16(RSP), (R22, R21)
WORD $0xa8c35ff8 //LDP.P 48(RSP), (R24, R23)
WORD $0xd65f03c0 //RET


TEXT ·_and_v6_neon(SB), $0-64
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD v6+48(FP), R6
MOVD size+56(FP), R7
WORD $0xa9bb6ffc //STP.W (R28, R27), -80(RSP)
WORD $0xa90167fa //STP (R26, R25), 16(RSP)
WORD $0xa9025ff8 //STP (R24, R23), 32(RSP)
WORD $0xa90357f6 //STP (R22, R21), 48(RSP)
WORD $0xa9044ff4 //STP (R20, R19), 64(RSP)
WORD $0x710008ff //CMPW $2, R7
WORD $0x54000363 //BCC 27(PC)
WORD $0x53017ce8 //LSRW $1, R7, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0xaa0603ef //MOVD R6, R15
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105e1 //FMOVQ.P 16(R15), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffde1 //BNE -17(PC)
WORD $0x121f78e8 //ANDW $4294967294, R7, R8
WORD $0x6b07011f //CMPW R7, R8
WORD $0x54001082 //BCS 132(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000e9 //ORRW $1, R7, R9
WORD $0x4b0900ea //SUBW R9, R7, R10
WORD $0x71000d5f //CMPW $3, R10
WORD $0x54000ca3 //BCC 101(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0x8b090013 //ADD R9, R0, R19
WORD $0x8b0a010b //ADD R10, R8, R11
WORD $0xd37df16b //LSL $3, R11, R11
WORD $0x9100216b //ADD $8, R11, R11
WORD $0x8b0b0015 //ADD R11, R0, R21
WORD $0x8b09002c //ADD R9, R1, R12
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b09004e //ADD R9, R2, R14
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b090070 //ADD R9, R3, R16
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b090094 //ADD R9, R4, R20
WORD $0x8b0b0096 //ADD R11, R4, R22
WORD $0x8b0900b7 //ADD R9, R5, R23
WORD $0x8b0b00b8 //ADD R11, R5, R24
WORD $0x8b0900d9 //ADD R9, R6, R25
WORD $0x8b0b00da //ADD R11, R6, R26
WORD $0xeb0d027f //CMP R13, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb15019f //CMP R21, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c017b //ANDW R12, R11, R27
WORD $0xeb0f027f //CMP R15, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb1501df //CMP R21, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb11027f //CMP R17, R19
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb16027f //CMP R22, R19
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb15029f //CMP R21, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb18027f //CMP R24, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb1502ff //CMP R21, R23
WORD $0x1a9f27f4 //CSETW LO, R20
WORD $0xeb1a027f //CMP R26, R19
WORD $0x1a9f27f3 //CSETW LO, R19
WORD $0xeb15033f //CMP R21, R25
WORD $0x1a9f27f5 //CSETW LO, R21
WORD $0x3700073b //TBNZ $0, R27, 57(PC)
WORD $0x0a0d016b //ANDW R13, R11, R11
WORD $0x370006eb //TBNZ $0, R11, 55(PC)
WORD $0x0a0f018b //ANDW R15, R12, R11
WORD $0x370006ab //TBNZ $0, R11, 53(PC)
WORD $0x0a1101cb //ANDW R17, R14, R11
WORD $0x3700066b //TBNZ $0, R11, 51(PC)
WORD $0x0a14020b //ANDW R20, R16, R11
WORD $0x3700062b //TBNZ $0, R11, 49(PC)
WORD $0x0a15026b //ANDW R21, R19, R11
WORD $0x370005eb //TBNZ $0, R11, 47(PC)
WORD $0x9100054a //ADD $1, R10, R10
WORD $0x927e794b //AND $8589934588, R10, R11
WORD $0x8b080168 //ADD R8, R11, R8
WORD $0x9100402c //ADD $16, R1, R12
WORD $0x9100404d //ADD $16, R2, R13
WORD $0x9100406e //ADD $16, R3, R14
WORD $0x9100408f //ADD $16, R4, R15
WORD $0xaa0503f0 //MOVD R5, R16
WORD $0xaa0603f1 //MOVD R6, R17
WORD $0xaa0003f3 //MOVD R0, R19
WORD $0xaa0b03f4 //MOVD R11, R20
WORD $0x8b090195 //ADD R9, R12, R21
WORD $0xad7f86a0 //FLDPQ -16(R21), (F0, F1)
WORD $0x8b0901b5 //ADD R9, R13, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0x8b0901d5 //ADD R9, R14, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x8b0901f5 //ADD R9, R15, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x8b090215 //ADD R9, R16, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x8b090235 //ADD R9, R17, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x8b090275 //ADD R9, R19, R21
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x91008273 //ADD $32, R19, R19
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x91008231 //ADD $32, R17, R17
WORD $0xad0006a0 //FSTPQ (F0, F1), (R21)
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x91008210 //ADD $32, R16, R16
WORD $0x910081ef //ADD $32, R15, R15
WORD $0xf1001294 //SUBS $4, R20, R20
WORD $0x54fffc01 //BNE -32(PC)
WORD $0xeb0b015f //CMP R11, R10
WORD $0x54000360 //BEQ 27(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df110 //LSL $3, R8, R16
WORD $0x8b10000a //ADD R16, R0, R10
WORD $0x8b1000cb //ADD R16, R6, R11
WORD $0x8b1000ac //ADD R16, R5, R12
WORD $0x8b10008d //ADD R16, R4, R13
WORD $0x8b10006e //ADD R16, R3, R14
WORD $0x8b10004f //ADD R16, R2, R15
WORD $0x8b100030 //ADD R16, R1, R16
WORD $0xd37df131 //LSL $3, R9, R17
WORD $0xf8716a00 //MOVD (R16)(R17), R0
WORD $0xf87169e1 //MOVD (R15)(R17), R1
WORD $0x8a000020 //AND R0, R1, R0
WORD $0xf87169c1 //MOVD (R14)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf87169a1 //MOVD (R13)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf8716981 //MOVD (R12)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf8716961 //MOVD (R11)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf8316940 //MOVD R0, (R10)(R17)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090111 //ADDW R9, R8, R17
WORD $0x6b07023f //CMPW R7, R17
WORD $0x54fffe03 //BCC -16(PC)
WORD $0xa9444ff4 //LDP 64(RSP), (R20, R19)
WORD $0xa94357f6 //LDP 48(RSP), (R22, R21)
WORD $0xa9425ff8 //LDP 32(RSP), (R24, R23)
WORD $0xa94167fa //LDP 16(RSP), (R26, R25)
WORD $0xa8c56ffc //LDP.P 80(RSP), (R28, R27)
WORD $0xd65f03c0 //RET



TEXT ·_and_sve(SB), $0-32
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD size+24(FP),R3
WORD $0x25e31fe0 //?
WORD $0x54000205 //BPL 16(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x04da0020 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e31d60 //?
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x54fffec4 //BMI -10(PC)
WORD $0xd65f03c0 //RET




TEXT ·_and_v3_sve(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD size+32(FP),R4

WORD $0x25e41fe0 //?
WORD $0x54000265 //BPL 19(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e41d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffe64 //BMI -13(PC)
WORD $0xd65f03c0 //RET


TEXT ·_and_v4_sve(SB), $0-48
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD size+40(FP), R5
WORD $0x25e51fe0 //?
WORD $0x540002c5 //BPL 22(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x8b08008c //ADD R8, R4, R12
WORD $0xa5e0a183 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x04da0060 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e51d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffe04 //BMI -16(PC)
WORD $0xd65f03c0 //RET


TEXT ·_and_v5_sve(SB), $0-56
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD size+48(FP), R6
WORD $0x25e61fe0 //?
WORD $0x54000325 //BPL 25(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x8b08008c //ADD R8, R4, R12
WORD $0xa5e0a183 //?
WORD $0x8b0800ac //ADD R8, R5, R12
WORD $0xa5e0a184 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x04da0060 //?
WORD $0x04da0080 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e61d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffda4 //BMI -19(PC)
WORD $0xd65f03c0 //RET


TEXT ·_and_v6_sve(SB), $0-64
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD v6+48(FP), R6
MOVD size+56(FP), R7
WORD $0x25e71fe0 //?
WORD $0x54000385 //BPL 28(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x8b08008c //ADD R8, R4, R12
WORD $0xa5e0a183 //?
WORD $0x8b0800ac //ADD R8, R5, R12
WORD $0xa5e0a184 //?
WORD $0x8b0800cc //ADD R8, R6, R12
WORD $0xa5e0a185 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x04da0060 //?
WORD $0x04da0080 //?
WORD $0x04da00a0 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e71d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffd44 //BMI -22(PC)
WORD $0xd65f03c0 //RET



TEXT ·_and_optimized(SB), $0-32
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD info+24(FP), R3

WORD $0xd360fc68 //LSR $32, R3, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x54000281 //BNE 20(PC)
WORD $0x92407c68 //AND $4294967295, R3, R8
WORD $0x25e81fe0 //?
WORD $0x54000b25 //BPL 89(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x04da0020 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffec4 //BMI -10(PC)
WORD $0x14000049 //JMP 73(PC)
WORD $0x7100087f //CMPW $2, R3
WORD $0x54000163 //BCC 11(PC)
WORD $0xd3417c68 //UBFX $1, R3, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff61 //BNE -5(PC)
WORD $0x121f7868 //ANDW $4294967294, R3, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54000742 //BCS 58(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000069 //ORRW $1, R3, R9
WORD $0x4b090069 //SUBW R9, R3, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540005a3 //BCC 45(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000a //ADD R11, R0, R10
WORD $0x3200006c //ORRW $1, R3, R12
WORD $0x4b0c006c //SUBW R12, R3, R12
WORD $0x8b08018c //ADD R8, R12, R12
WORD $0xd37df18c //LSL $3, R12, R12
WORD $0x9100218c //ADD $8, R12, R12
WORD $0x8b0c000d //ADD R12, R0, R13
WORD $0x8b0b002e //ADD R11, R1, R14
WORD $0x8b0c002f //ADD R12, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0c004c //ADD R12, R2, R12
WORD $0xeb0f015f //CMP R15, R10
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x0a0e01ee //ANDW R14, R15, R14
WORD $0xeb0c015f //CMP R12, R10
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x370002ee //TBNZ $0, R14, 23(PC)
WORD $0x0a0c014a //ANDW R12, R10, R10
WORD $0x370002aa //TBNZ $0, R10, 21(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416d //ADD $16, R11, R13
WORD $0x8b0d002b //ADD R13, R1, R11
WORD $0x8b0d000c //ADD R13, R0, R12
WORD $0x8b0d004d //ADD R13, R2, R13
WORD $0xaa0a03ee //MOVD R10, R14
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100816b //ADD $32, R11, R11
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0xf10011ce //SUBS $4, R14, R14
WORD $0x54fffee1 //BNE -9(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000120 //BEQ 9(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0x8a0a016a //AND R10, R11, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54ffff23 //BCC -7(PC)
WORD $0xd65f03c0 //RET



TEXT ·_and_v3_optimized(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD info+32(FP),R4
WORD $0xd360fc88 //LSR $32, R4, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x540002e1 //BNE 23(PC)
WORD $0x92407c88 //AND $4294967295, R4, R8
WORD $0x25e81fe0 //?
WORD $0x54000de5 //BPL 111(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffe64 //BMI -13(PC)
WORD $0x1400005c //JMP 92(PC)
WORD $0x7100089f //CMPW $2, R4
WORD $0x540001e3 //BCC 15(PC)
WORD $0xd3417c88 //UBFX $1, R4, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff01 //BNE -8(PC)
WORD $0x121f7888 //ANDW $4294967294, R4, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54000922 //BCS 73(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000089 //ORRW $1, R4, R9
WORD $0x4b090089 //SUBW R9, R4, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000743 //BCC 58(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000c //ADD R11, R0, R12
WORD $0x3200008a //ORRW $1, R4, R10
WORD $0x4b0a008a //SUBW R10, R4, R10
WORD $0x8b08014a //ADD R8, R10, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a000e //ADD R10, R0, R14
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b0a002f //ADD R10, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0065 //ADD R11, R3, R5
WORD $0x8b0a0066 //ADD R10, R3, R6
WORD $0xeb0f019f //CMP R15, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e01bf //CMP R14, R13
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0x0a0d014f //ANDW R13, R10, R15
WORD $0xeb11019f //CMP R17, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e021f //CMP R14, R16
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb06019f //CMP R6, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb0e00bf //CMP R14, R5
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x370003cf //TBNZ $0, R15, 30(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x3700038a //TBNZ $0, R10, 28(PC)
WORD $0x0a0e018a //ANDW R14, R12, R10
WORD $0x3700034a //TBNZ $0, R10, 26(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416e //ADD $16, R11, R14
WORD $0x8b0e002b //ADD R14, R1, R11
WORD $0x8b0e000c //ADD R14, R0, R12
WORD $0x8b0e004d //ADD R14, R2, R13
WORD $0x8b0e006e //ADD R14, R3, R14
WORD $0xaa0a03ef //MOVD R10, R15
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0xf10011ef //SUBS $4, R15, R15
WORD $0x54fffe61 //BNE -13(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000160 //BEQ 11(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xf869686c //MOVD (R3)(R9), R12
WORD $0x8a0a016a //AND R10, R11, R10
WORD $0x8a0c014a //AND R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54fffee3 //BCC -9(PC)
WORD $0xd65f03c0 //RET


TEXT ·_and_v4_optimized(SB), $0-48
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD size+40(FP), R5
WORD $0xa9be57f6 //STP.W (R22, R21), -32(RSP)
WORD $0xa9014ff4 //STP (R20, R19), 16(RSP)
WORD $0xd360fca8 //LSR $32, R5, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x54000341 //BNE 26(PC)
WORD $0x92407ca8 //AND $4294967295, R5, R8
WORD $0x25e81fe0 //?
WORD $0x540010a5 //BPL 133(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x8b09008d //ADD R9, R4, R13
WORD $0xa5e0a1a3 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x04da0060 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffe04 //BMI -16(PC)
WORD $0x1400006f //JMP 111(PC)
WORD $0x710008bf //CMPW $2, R5
WORD $0x54000263 //BCC 19(PC)
WORD $0xd3417ca8 //UBFX $1, R5, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffea1 //BNE -11(PC)
WORD $0x121f78a8 //ANDW $4294967294, R5, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54000b02 //BCS 88(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000a9 //ORRW $1, R5, R9
WORD $0x4b0900a9 //SUBW R9, R5, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540008e3 //BCC 71(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000e //ADD R11, R0, R14
WORD $0x320000aa //ORRW $1, R5, R10
WORD $0x4b0a00aa //SUBW R10, R5, R10
WORD $0x8b08014a //ADD R8, R10, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0010 //ADD R10, R0, R16
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0066 //ADD R11, R3, R6
WORD $0x8b0a0067 //ADD R10, R3, R7
WORD $0x8b0b0093 //ADD R11, R4, R19
WORD $0x8b0a0094 //ADD R10, R4, R20
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb10019f //CMP R16, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0155 //ANDW R12, R10, R21
WORD $0xeb1101df //CMP R17, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb1001ff //CMP R16, R15
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb1000df //CMP R16, R6
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb1401df //CMP R20, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb10027f //CMP R16, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0x370004b5 //TBNZ $0, R21, 37(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x3700046a //TBNZ $0, R10, 35(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x3700042a //TBNZ $0, R10, 33(PC)
WORD $0x0a1001ca //ANDW R16, R14, R10
WORD $0x370003ea //TBNZ $0, R10, 31(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416f //ADD $16, R11, R15
WORD $0x8b0f002b //ADD R15, R1, R11
WORD $0x8b0f000c //ADD R15, R0, R12
WORD $0x8b0f004d //ADD R15, R2, R13
WORD $0x8b0f008e //ADD R15, R4, R14
WORD $0x8b0f006f //ADD R15, R3, R15
WORD $0xaa0a03f0 //MOVD R10, R16
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100816b //ADD $32, R11, R11
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0xf1001210 //SUBS $4, R16, R16
WORD $0x54fffde1 //BNE -17(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x540001a0 //BEQ 13(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0x8a0a016a //AND R10, R11, R10
WORD $0xf869686b //MOVD (R3)(R9), R11
WORD $0xf869688c //MOVD (R4)(R9), R12
WORD $0x8a0b014a //AND R11, R10, R10
WORD $0x8a0c014a //AND R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54fffea3 //BCC -11(PC)
WORD $0xa9414ff4 //LDP 16(RSP), (R20, R19)
WORD $0xa8c257f6 //LDP.P 32(RSP), (R22, R21)
WORD $0xd65f03c0 //RET


TEXT ·_and_v5_optimized(SB), $0-56
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD size+48(FP), R6
WORD $0xa9bd5ff8 //STP.W (R24, R23), -48(RSP)
WORD $0xa90157f6 //STP (R22, R21), 16(RSP)
WORD $0xa9024ff4 //STP (R20, R19), 32(RSP)
WORD $0xd360fcc8 //LSR $32, R6, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x540003a1 //BNE 29(PC)
WORD $0x92407cc8 //AND $4294967295, R6, R8
WORD $0x25e81fe0 //?
WORD $0x54001485 //BPL 164(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x8b09008d //ADD R9, R4, R13
WORD $0xa5e0a1a3 //?
WORD $0x8b0900ad //ADD R9, R5, R13
WORD $0xa5e0a1a4 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x04da0060 //?
WORD $0x04da0080 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffda4 //BMI -19(PC)
WORD $0x1400008b //JMP 139(PC)
WORD $0x710008df //CMPW $2, R6
WORD $0x540002e3 //BCC 23(PC)
WORD $0xd3417cc8 //UBFX $1, R6, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffe41 //BNE -14(PC)
WORD $0x121f78c8 //ANDW $4294967294, R6, R8
WORD $0x6b06011f //CMPW R6, R8
WORD $0x54000e02 //BCS 112(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000c9 //ORRW $1, R6, R9
WORD $0x4b0900c9 //SUBW R9, R6, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000a83 //BCC 84(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b0010 //ADD R11, R0, R16
WORD $0x320000ca //ORRW $1, R6, R10
WORD $0x4b0a00ca //SUBW R10, R6, R10
WORD $0x8b08014a //ADD R8, R10, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0007 //ADD R10, R0, R7
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x8b0a004f //ADD R10, R2, R15
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b0a0073 //ADD R10, R3, R19
WORD $0x8b0b0094 //ADD R11, R4, R20
WORD $0x8b0a0095 //ADD R10, R4, R21
WORD $0x8b0b00b6 //ADD R11, R5, R22
WORD $0x8b0a00b7 //ADD R10, R5, R23
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb07019f //CMP R7, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0158 //ANDW R12, R10, R24
WORD $0xeb0f021f //CMP R15, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb13021f //CMP R19, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb07023f //CMP R7, R17
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb07029f //CMP R7, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb17021f //CMP R23, R16
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb0702df //CMP R7, R22
WORD $0x1a9f27e7 //CSETW LO, R7
WORD $0x37000598 //TBNZ $0, R24, 44(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x3700054a //TBNZ $0, R10, 42(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x3700050a //TBNZ $0, R10, 40(PC)
WORD $0x0a1101ca //ANDW R17, R14, R10
WORD $0x370004ca //TBNZ $0, R10, 38(PC)
WORD $0x0a07020a //ANDW R7, R16, R10
WORD $0x3700048a //TBNZ $0, R10, 36(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x91004170 //ADD $16, R11, R16
WORD $0x8b10002b //ADD R16, R1, R11
WORD $0x8b10000c //ADD R16, R0, R12
WORD $0x8b10004d //ADD R16, R2, R13
WORD $0x8b1000ae //ADD R16, R5, R14
WORD $0x8b10006f //ADD R16, R3, R15
WORD $0x8b100090 //ADD R16, R4, R16
WORD $0xaa0a03f1 //MOVD R10, R17
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad7f8e02 //FLDPQ -16(R16), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100816b //ADD $32, R11, R11
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0x91008210 //ADD $32, R16, R16
WORD $0xf1001231 //SUBS $4, R17, R17
WORD $0x54fffd61 //BNE -21(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000300 //BEQ 24(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df10f //LSL $3, R8, R15
WORD $0x8b0f000a //ADD R15, R0, R10
WORD $0x8b0f00ab //ADD R15, R5, R11
WORD $0x8b0f008c //ADD R15, R4, R12
WORD $0x8b0f006d //ADD R15, R3, R13
WORD $0x8b0f004e //ADD R15, R2, R14
WORD $0x8b0f002f //ADD R15, R1, R15
WORD $0xd37df130 //LSL $3, R9, R16
WORD $0xf87069f1 //MOVD (R15)(R16), R17
WORD $0xf87069c0 //MOVD (R14)(R16), R0
WORD $0x8a110011 //AND R17, R0, R17
WORD $0xf87069a0 //MOVD (R13)(R16), R0
WORD $0x8a000231 //AND R0, R17, R17
WORD $0xf8706980 //MOVD (R12)(R16), R0
WORD $0x8a000231 //AND R0, R17, R17
WORD $0xf8706960 //MOVD (R11)(R16), R0
WORD $0x8a000231 //AND R0, R17, R17
WORD $0xf8306951 //MOVD R17, (R10)(R16)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090110 //ADDW R9, R8, R16
WORD $0x6b06021f //CMPW R6, R16
WORD $0x54fffe43 //BCC -14(PC)
WORD $0xa9424ff4 //LDP 32(RSP), (R20, R19)
WORD $0xa94157f6 //LDP 16(RSP), (R22, R21)
WORD $0xa8c35ff8 //LDP.P 48(RSP), (R24, R23)
WORD $0xd65f03c0 //RET


TEXT ·_and_v6_optimized(SB), $0-64
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD v6+48(FP), R6
MOVD size+56(FP), R7
WORD $0xa9bb6ffc //STP.W (R28, R27), -80(RSP)
WORD $0xa90167fa //STP (R26, R25), 16(RSP)
WORD $0xa9025ff8 //STP (R24, R23), 32(RSP)
WORD $0xa90357f6 //STP (R22, R21), 48(RSP)
WORD $0xa9044ff4 //STP (R20, R19), 64(RSP)
WORD $0xd360fce8 //LSR $32, R7, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x54000401 //BNE 32(PC)
WORD $0x92407ce8 //AND $4294967295, R7, R8
WORD $0x25e81fe0 //?
WORD $0x54001825 //BPL 193(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x8b09008d //ADD R9, R4, R13
WORD $0xa5e0a1a3 //?
WORD $0x8b0900ad //ADD R9, R5, R13
WORD $0xa5e0a1a4 //?
WORD $0x8b0900cd //ADD R9, R6, R13
WORD $0xa5e0a1a5 //?
WORD $0x04da0020 //?
WORD $0x04da0040 //?
WORD $0x04da0060 //?
WORD $0x04da0080 //?
WORD $0x04da00a0 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffd44 //BMI -22(PC)
WORD $0x140000a5 //JMP 165(PC)
WORD $0x710008ff //CMPW $2, R7
WORD $0x54000363 //BCC 27(PC)
WORD $0xd3417ce8 //UBFX $1, R7, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0xaa0603ef //MOVD R6, R15
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105e1 //FMOVQ.P 16(R15), F1
WORD $0x4e201c20 //VAND V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffde1 //BNE -17(PC)
WORD $0x121f78e8 //ANDW $4294967294, R7, R8
WORD $0x6b07011f //CMPW R7, R8
WORD $0x540010c2 //BCS 134(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000e9 //ORRW $1, R7, R9
WORD $0x4b0900ea //SUBW R9, R7, R10
WORD $0x71000d5f //CMPW $3, R10
WORD $0x54000ce3 //BCC 103(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0x8b090013 //ADD R9, R0, R19
WORD $0x320000eb //ORRW $1, R7, R11
WORD $0x4b0b00eb //SUBW R11, R7, R11
WORD $0x8b08016b //ADD R8, R11, R11
WORD $0xd37df16b //LSL $3, R11, R11
WORD $0x9100216b //ADD $8, R11, R11
WORD $0x8b0b0015 //ADD R11, R0, R21
WORD $0x8b09002c //ADD R9, R1, R12
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b09004e //ADD R9, R2, R14
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b090070 //ADD R9, R3, R16
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b090094 //ADD R9, R4, R20
WORD $0x8b0b0096 //ADD R11, R4, R22
WORD $0x8b0900b7 //ADD R9, R5, R23
WORD $0x8b0b00b8 //ADD R11, R5, R24
WORD $0x8b0900d9 //ADD R9, R6, R25
WORD $0x8b0b00da //ADD R11, R6, R26
WORD $0xeb0d027f //CMP R13, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb15019f //CMP R21, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c017b //ANDW R12, R11, R27
WORD $0xeb0f027f //CMP R15, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb1501df //CMP R21, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb11027f //CMP R17, R19
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb16027f //CMP R22, R19
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb15029f //CMP R21, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb18027f //CMP R24, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb1502ff //CMP R21, R23
WORD $0x1a9f27f4 //CSETW LO, R20
WORD $0xeb1a027f //CMP R26, R19
WORD $0x1a9f27f3 //CSETW LO, R19
WORD $0xeb15033f //CMP R21, R25
WORD $0x1a9f27f5 //CSETW LO, R21
WORD $0x3700073b //TBNZ $0, R27, 57(PC)
WORD $0x0a0d016b //ANDW R13, R11, R11
WORD $0x370006eb //TBNZ $0, R11, 55(PC)
WORD $0x0a0f018b //ANDW R15, R12, R11
WORD $0x370006ab //TBNZ $0, R11, 53(PC)
WORD $0x0a1101cb //ANDW R17, R14, R11
WORD $0x3700066b //TBNZ $0, R11, 51(PC)
WORD $0x0a14020b //ANDW R20, R16, R11
WORD $0x3700062b //TBNZ $0, R11, 49(PC)
WORD $0x0a15026b //ANDW R21, R19, R11
WORD $0x370005eb //TBNZ $0, R11, 47(PC)
WORD $0x9100054a //ADD $1, R10, R10
WORD $0x927e794b //AND $8589934588, R10, R11
WORD $0x8b080168 //ADD R8, R11, R8
WORD $0x9100402c //ADD $16, R1, R12
WORD $0x9100404d //ADD $16, R2, R13
WORD $0x9100406e //ADD $16, R3, R14
WORD $0x9100408f //ADD $16, R4, R15
WORD $0xaa0503f0 //MOVD R5, R16
WORD $0xaa0603f1 //MOVD R6, R17
WORD $0xaa0003f3 //MOVD R0, R19
WORD $0xaa0b03f4 //MOVD R11, R20
WORD $0x8b090195 //ADD R9, R12, R21
WORD $0xad7f86a0 //FLDPQ -16(R21), (F0, F1)
WORD $0x8b0901b5 //ADD R9, R13, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4e201c40 //VAND V0.B16, V2.B16, V0.B16
WORD $0x4e211c61 //VAND V1.B16, V3.B16, V1.B16
WORD $0x8b0901d5 //ADD R9, R14, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x8b0901f5 //ADD R9, R15, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x8b090215 //ADD R9, R16, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x8b090235 //ADD R9, R17, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4e221c00 //VAND V2.B16, V0.B16, V0.B16
WORD $0x8b090275 //ADD R9, R19, R21
WORD $0x4e231c21 //VAND V3.B16, V1.B16, V1.B16
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x91008273 //ADD $32, R19, R19
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x91008231 //ADD $32, R17, R17
WORD $0xad0006a0 //FSTPQ (F0, F1), (R21)
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x91008210 //ADD $32, R16, R16
WORD $0x910081ef //ADD $32, R15, R15
WORD $0xf1001294 //SUBS $4, R20, R20
WORD $0x54fffc01 //BNE -32(PC)
WORD $0xeb0b015f //CMP R11, R10
WORD $0x54000360 //BEQ 27(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df110 //LSL $3, R8, R16
WORD $0x8b10000a //ADD R16, R0, R10
WORD $0x8b1000cb //ADD R16, R6, R11
WORD $0x8b1000ac //ADD R16, R5, R12
WORD $0x8b10008d //ADD R16, R4, R13
WORD $0x8b10006e //ADD R16, R3, R14
WORD $0x8b10004f //ADD R16, R2, R15
WORD $0x8b100030 //ADD R16, R1, R16
WORD $0xd37df131 //LSL $3, R9, R17
WORD $0xf8716a00 //MOVD (R16)(R17), R0
WORD $0xf87169e1 //MOVD (R15)(R17), R1
WORD $0x8a000020 //AND R0, R1, R0
WORD $0xf87169c1 //MOVD (R14)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf87169a1 //MOVD (R13)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf8716981 //MOVD (R12)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf8716961 //MOVD (R11)(R17), R1
WORD $0x8a010000 //AND R1, R0, R0
WORD $0xf8316940 //MOVD R0, (R10)(R17)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090111 //ADDW R9, R8, R17
WORD $0x6b07023f //CMPW R7, R17
WORD $0x54fffe03 //BCC -16(PC)
WORD $0xa9444ff4 //LDP 64(RSP), (R20, R19)
WORD $0xa94357f6 //LDP 48(RSP), (R22, R21)
WORD $0xa9425ff8 //LDP 32(RSP), (R24, R23)
WORD $0xa94167fa //LDP 16(RSP), (R26, R25)
WORD $0xa8c56ffc //LDP.P 80(RSP), (R28, R27)
WORD $0xd65f03c0 //RET



TEXT ·_or_neon(SB), $0-32
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD size+24(FP),R3
WORD $0x7100087f //CMPW $2, R3
WORD $0x54000163 //BCC 11(PC)
WORD $0x53017c68 //LSRW $1, R3, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff61 //BNE -5(PC)
WORD $0x121f7868 //ANDW $4294967294, R3, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54000742 //BCS 58(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000069 //ORRW $1, R3, R9
WORD $0x4b090069 //SUBW R9, R3, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540005a3 //BCC 45(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000a //ADD R11, R0, R10
WORD $0x8b09010c //ADD R9, R8, R12
WORD $0xd37df18c //LSL $3, R12, R12
WORD $0x9100218c //ADD $8, R12, R12
WORD $0x8b0c000d //ADD R12, R0, R13
WORD $0x8b0b002e //ADD R11, R1, R14
WORD $0x8b0c002f //ADD R12, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0c004c //ADD R12, R2, R12
WORD $0xeb0f015f //CMP R15, R10
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x0a0e01ee //ANDW R14, R15, R14
WORD $0xeb0c015f //CMP R12, R10
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x3700032e //TBNZ $0, R14, 25(PC)
WORD $0x0a0c014a //ANDW R12, R10, R10
WORD $0x370002ea //TBNZ $0, R10, 23(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004b //ADD R11, R2, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03ee //MOVD R10, R14
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf10011ce //SUBS $4, R14, R14
WORD $0x54fffee1 //BNE -9(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000120 //BEQ 9(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xaa0a016a //ORR R10, R11, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54ffff23 //BCC -7(PC)
WORD $0xd65f03c0 //RET



TEXT ·_or_v3_neon(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD size+32(FP),R4

WORD $0x7100089f //CMPW $2, R4
WORD $0x540001e3 //BCC 15(PC)
WORD $0x53017c88 //LSRW $1, R4, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff01 //BNE -8(PC)
WORD $0x121f7888 //ANDW $4294967294, R4, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54000942 //BCS 74(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000089 //ORRW $1, R4, R9
WORD $0x4b090089 //SUBW R9, R4, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000763 //BCC 59(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000c //ADD R11, R0, R12
WORD $0x8b09010a //ADD R9, R8, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a000e //ADD R10, R0, R14
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b0a002f //ADD R10, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0065 //ADD R11, R3, R5
WORD $0x8b0a0066 //ADD R10, R3, R6
WORD $0xeb0f019f //CMP R15, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e01bf //CMP R14, R13
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0x0a0d014f //ANDW R13, R10, R15
WORD $0xeb11019f //CMP R17, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e021f //CMP R14, R16
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb06019f //CMP R6, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb0e00bf //CMP R14, R5
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x3700042f //TBNZ $0, R15, 33(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x370003ea //TBNZ $0, R10, 31(PC)
WORD $0x0a0e018a //ANDW R14, R12, R10
WORD $0x370003aa //TBNZ $0, R10, 29(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x910041ce //ADD $16, R14, R14
WORD $0x8b0b006b //ADD R11, R3, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03ef //MOVD R10, R15
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x9100818c //ADD $32, R12, R12
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf10011ef //SUBS $4, R15, R15
WORD $0x54fffe61 //BNE -13(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000160 //BEQ 11(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xf869686c //MOVD (R3)(R9), R12
WORD $0xaa0a016a //ORR R10, R11, R10
WORD $0xaa0c014a //ORR R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54fffee3 //BCC -9(PC)
WORD $0xd65f03c0 //RET



TEXT ·_or_v4_neon(SB), $0-48
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD size+40(FP), R5
WORD $0xa9be57f6 //STP.W (R22, R21), -32(RSP)
WORD $0xa9014ff4 //STP (R20, R19), 16(RSP)
WORD $0x710008bf //CMPW $2, R5
WORD $0x54000263 //BCC 19(PC)
WORD $0x53017ca8 //LSRW $1, R5, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffea1 //BNE -11(PC)
WORD $0x121f78a8 //ANDW $4294967294, R5, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54000b42 //BCS 90(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000a9 //ORRW $1, R5, R9
WORD $0x4b0900a9 //SUBW R9, R5, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000923 //BCC 73(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000e //ADD R11, R0, R14
WORD $0x8b09010a //ADD R9, R8, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0010 //ADD R10, R0, R16
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0066 //ADD R11, R3, R6
WORD $0x8b0a0067 //ADD R10, R3, R7
WORD $0x8b0b0093 //ADD R11, R4, R19
WORD $0x8b0a0094 //ADD R10, R4, R20
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb10019f //CMP R16, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0155 //ANDW R12, R10, R21
WORD $0xeb1101df //CMP R17, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb1001ff //CMP R16, R15
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb1000df //CMP R16, R6
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb1401df //CMP R20, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb10027f //CMP R16, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0x37000535 //TBNZ $0, R21, 41(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x370004ea //TBNZ $0, R10, 39(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x370004aa //TBNZ $0, R10, 37(PC)
WORD $0x0a1001ca //ANDW R16, R14, R10
WORD $0x3700046a //TBNZ $0, R10, 35(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x910041ce //ADD $16, R14, R14
WORD $0x8b0b008f //ADD R11, R4, R15
WORD $0x910041ef //ADD $16, R15, R15
WORD $0x8b0b006b //ADD R11, R3, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03f0 //MOVD R10, R16
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf1001210 //SUBS $4, R16, R16
WORD $0x54fffde1 //BNE -17(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x540001a0 //BEQ 13(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xaa0a016a //ORR R10, R11, R10
WORD $0xf869686b //MOVD (R3)(R9), R11
WORD $0xf869688c //MOVD (R4)(R9), R12
WORD $0xaa0b014a //ORR R11, R10, R10
WORD $0xaa0c014a //ORR R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54fffea3 //BCC -11(PC)
WORD $0xa9414ff4 //LDP 16(RSP), (R20, R19)
WORD $0xa8c257f6 //LDP.P 32(RSP), (R22, R21)
WORD $0xd65f03c0 //RET

TEXT ·_or_v5_neon(SB), $0-56
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD size+48(FP), R6
WORD $0xa9bd5ff8 //STP.W (R24, R23), -48(RSP)
WORD $0xa90157f6 //STP (R22, R21), 16(RSP)
WORD $0xa9024ff4 //STP (R20, R19), 32(RSP)
WORD $0x710008df //CMPW $2, R6
WORD $0x540002e3 //BCC 23(PC)
WORD $0x53017cc8 //LSRW $1, R6, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffe41 //BNE -14(PC)
WORD $0x121f78c8 //ANDW $4294967294, R6, R8
WORD $0x6b06011f //CMPW R6, R8
WORD $0x54000e62 //BCS 115(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000c9 //ORRW $1, R6, R9
WORD $0x4b0900c9 //SUBW R9, R6, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000ae3 //BCC 87(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b0010 //ADD R11, R0, R16
WORD $0x8b09010a //ADD R9, R8, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0007 //ADD R10, R0, R7
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x8b0a004f //ADD R10, R2, R15
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b0a0073 //ADD R10, R3, R19
WORD $0x8b0b0094 //ADD R11, R4, R20
WORD $0x8b0a0095 //ADD R10, R4, R21
WORD $0x8b0b00b6 //ADD R11, R5, R22
WORD $0x8b0a00b7 //ADD R10, R5, R23
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb07019f //CMP R7, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0158 //ANDW R12, R10, R24
WORD $0xeb0f021f //CMP R15, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb13021f //CMP R19, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb07023f //CMP R7, R17
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb07029f //CMP R7, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb17021f //CMP R23, R16
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb0702df //CMP R7, R22
WORD $0x1a9f27e7 //CSETW LO, R7
WORD $0x37000638 //TBNZ $0, R24, 49(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x370005ea //TBNZ $0, R10, 47(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x370005aa //TBNZ $0, R10, 45(PC)
WORD $0x0a1101ca //ANDW R17, R14, R10
WORD $0x3700056a //TBNZ $0, R10, 43(PC)
WORD $0x0a07020a //ANDW R7, R16, R10
WORD $0x3700052a //TBNZ $0, R10, 41(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x910041ce //ADD $16, R14, R14
WORD $0x8b0b00af //ADD R11, R5, R15
WORD $0x910041ef //ADD $16, R15, R15
WORD $0x8b0b0070 //ADD R11, R3, R16
WORD $0x91004210 //ADD $16, R16, R16
WORD $0x8b0b008b //ADD R11, R4, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03f1 //MOVD R10, R17
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad7f8e02 //FLDPQ -16(R16), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0x91008210 //ADD $32, R16, R16
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf1001231 //SUBS $4, R17, R17
WORD $0x54fffd61 //BNE -21(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000300 //BEQ 24(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df10f //LSL $3, R8, R15
WORD $0x8b0f000a //ADD R15, R0, R10
WORD $0x8b0f00ab //ADD R15, R5, R11
WORD $0x8b0f008c //ADD R15, R4, R12
WORD $0x8b0f006d //ADD R15, R3, R13
WORD $0x8b0f004e //ADD R15, R2, R14
WORD $0x8b0f002f //ADD R15, R1, R15
WORD $0xd37df130 //LSL $3, R9, R16
WORD $0xf87069f1 //MOVD (R15)(R16), R17
WORD $0xf87069c0 //MOVD (R14)(R16), R0
WORD $0xaa110011 //ORR R17, R0, R17
WORD $0xf87069a0 //MOVD (R13)(R16), R0
WORD $0xaa000231 //ORR R0, R17, R17
WORD $0xf8706980 //MOVD (R12)(R16), R0
WORD $0xaa000231 //ORR R0, R17, R17
WORD $0xf8706960 //MOVD (R11)(R16), R0
WORD $0xaa000231 //ORR R0, R17, R17
WORD $0xf8306951 //MOVD R17, (R10)(R16)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090110 //ADDW R9, R8, R16
WORD $0x6b06021f //CMPW R6, R16
WORD $0x54fffe43 //BCC -14(PC)
WORD $0xa9424ff4 //LDP 32(RSP), (R20, R19)
WORD $0xa94157f6 //LDP 16(RSP), (R22, R21)
WORD $0xa8c35ff8 //LDP.P 48(RSP), (R24, R23)
WORD $0xd65f03c0 //RET

TEXT ·_or_v6_neon(SB), $0-64
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD v6+48(FP), R6
MOVD size+56(FP), R7
WORD $0xa9bb6ffc //STP.W (R28, R27), -80(RSP)
WORD $0xa90167fa //STP (R26, R25), 16(RSP)
WORD $0xa9025ff8 //STP (R24, R23), 32(RSP)
WORD $0xa90357f6 //STP (R22, R21), 48(RSP)
WORD $0xa9044ff4 //STP (R20, R19), 64(RSP)
WORD $0x710008ff //CMPW $2, R7
WORD $0x54000363 //BCC 27(PC)
WORD $0x53017ce8 //LSRW $1, R7, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0xaa0603ef //MOVD R6, R15
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105e1 //FMOVQ.P 16(R15), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffde1 //BNE -17(PC)
WORD $0x121f78e8 //ANDW $4294967294, R7, R8
WORD $0x6b07011f //CMPW R7, R8
WORD $0x54001082 //BCS 132(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000e9 //ORRW $1, R7, R9
WORD $0x4b0900ea //SUBW R9, R7, R10
WORD $0x71000d5f //CMPW $3, R10
WORD $0x54000ca3 //BCC 101(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0x8b090013 //ADD R9, R0, R19
WORD $0x8b0a010b //ADD R10, R8, R11
WORD $0xd37df16b //LSL $3, R11, R11
WORD $0x9100216b //ADD $8, R11, R11
WORD $0x8b0b0015 //ADD R11, R0, R21
WORD $0x8b09002c //ADD R9, R1, R12
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b09004e //ADD R9, R2, R14
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b090070 //ADD R9, R3, R16
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b090094 //ADD R9, R4, R20
WORD $0x8b0b0096 //ADD R11, R4, R22
WORD $0x8b0900b7 //ADD R9, R5, R23
WORD $0x8b0b00b8 //ADD R11, R5, R24
WORD $0x8b0900d9 //ADD R9, R6, R25
WORD $0x8b0b00da //ADD R11, R6, R26
WORD $0xeb0d027f //CMP R13, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb15019f //CMP R21, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c017b //ANDW R12, R11, R27
WORD $0xeb0f027f //CMP R15, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb1501df //CMP R21, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb11027f //CMP R17, R19
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb16027f //CMP R22, R19
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb15029f //CMP R21, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb18027f //CMP R24, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb1502ff //CMP R21, R23
WORD $0x1a9f27f4 //CSETW LO, R20
WORD $0xeb1a027f //CMP R26, R19
WORD $0x1a9f27f3 //CSETW LO, R19
WORD $0xeb15033f //CMP R21, R25
WORD $0x1a9f27f5 //CSETW LO, R21
WORD $0x3700073b //TBNZ $0, R27, 57(PC)
WORD $0x0a0d016b //ANDW R13, R11, R11
WORD $0x370006eb //TBNZ $0, R11, 55(PC)
WORD $0x0a0f018b //ANDW R15, R12, R11
WORD $0x370006ab //TBNZ $0, R11, 53(PC)
WORD $0x0a1101cb //ANDW R17, R14, R11
WORD $0x3700066b //TBNZ $0, R11, 51(PC)
WORD $0x0a14020b //ANDW R20, R16, R11
WORD $0x3700062b //TBNZ $0, R11, 49(PC)
WORD $0x0a15026b //ANDW R21, R19, R11
WORD $0x370005eb //TBNZ $0, R11, 47(PC)
WORD $0x9100054a //ADD $1, R10, R10
WORD $0x927e794b //AND $8589934588, R10, R11
WORD $0x8b080168 //ADD R8, R11, R8
WORD $0x9100402c //ADD $16, R1, R12
WORD $0x9100404d //ADD $16, R2, R13
WORD $0x9100406e //ADD $16, R3, R14
WORD $0x9100408f //ADD $16, R4, R15
WORD $0xaa0503f0 //MOVD R5, R16
WORD $0xaa0603f1 //MOVD R6, R17
WORD $0xaa0003f3 //MOVD R0, R19
WORD $0xaa0b03f4 //MOVD R11, R20
WORD $0x8b090195 //ADD R9, R12, R21
WORD $0xad7f86a0 //FLDPQ -16(R21), (F0, F1)
WORD $0x8b0901b5 //ADD R9, R13, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0x8b0901d5 //ADD R9, R14, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x8b0901f5 //ADD R9, R15, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x8b090215 //ADD R9, R16, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x8b090235 //ADD R9, R17, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x8b090275 //ADD R9, R19, R21
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x91008273 //ADD $32, R19, R19
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x91008231 //ADD $32, R17, R17
WORD $0xad0006a0 //FSTPQ (F0, F1), (R21)
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x91008210 //ADD $32, R16, R16
WORD $0x910081ef //ADD $32, R15, R15
WORD $0xf1001294 //SUBS $4, R20, R20
WORD $0x54fffc01 //BNE -32(PC)
WORD $0xeb0b015f //CMP R11, R10
WORD $0x54000360 //BEQ 27(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df110 //LSL $3, R8, R16
WORD $0x8b10000a //ADD R16, R0, R10
WORD $0x8b1000cb //ADD R16, R6, R11
WORD $0x8b1000ac //ADD R16, R5, R12
WORD $0x8b10008d //ADD R16, R4, R13
WORD $0x8b10006e //ADD R16, R3, R14
WORD $0x8b10004f //ADD R16, R2, R15
WORD $0x8b100030 //ADD R16, R1, R16
WORD $0xd37df131 //LSL $3, R9, R17
WORD $0xf8716a00 //MOVD (R16)(R17), R0
WORD $0xf87169e1 //MOVD (R15)(R17), R1
WORD $0xaa000020 //ORR R0, R1, R0
WORD $0xf87169c1 //MOVD (R14)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf87169a1 //MOVD (R13)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf8716981 //MOVD (R12)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf8716961 //MOVD (R11)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf8316940 //MOVD R0, (R10)(R17)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090111 //ADDW R9, R8, R17
WORD $0x6b07023f //CMPW R7, R17
WORD $0x54fffe03 //BCC -16(PC)
WORD $0xa9444ff4 //LDP 64(RSP), (R20, R19)
WORD $0xa94357f6 //LDP 48(RSP), (R22, R21)
WORD $0xa9425ff8 //LDP 32(RSP), (R24, R23)
WORD $0xa94167fa //LDP 16(RSP), (R26, R25)
WORD $0xa8c56ffc //LDP.P 80(RSP), (R28, R27)
WORD $0xd65f03c0 //RET


TEXT ·_or_sve(SB), $0-32
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD size+24(FP),R3

WORD $0x25e31fe0 //?
WORD $0x54000205 //BPL 16(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x04d80020 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e31d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffec4 //BMI -10(PC)
WORD $0xd65f03c0 //RET



TEXT ·_or_v3_sve(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD size+32(FP),R4

WORD $0x25e41fe0 //?
WORD $0x54000265 //BPL 19(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e41d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffe64 //BMI -13(PC)
WORD $0xd65f03c0 //RET


TEXT ·_or_v4_sve(SB), $0-48
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD size+40(FP), R5
WORD $0x25e51fe0 //?
WORD $0x540002c5 //BPL 22(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x8b08008c //ADD R8, R4, R12
WORD $0xa5e0a183 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x04d80060 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e51d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffe04 //BMI -16(PC)
WORD $0xd65f03c0 //RET


TEXT ·_or_v5_sve(SB), $0-56
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD size+48(FP), R6
WORD $0x25e61fe0 //?
WORD $0x54000325 //BPL 25(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x8b08008c //ADD R8, R4, R12
WORD $0xa5e0a183 //?
WORD $0x8b0800ac //ADD R8, R5, R12
WORD $0xa5e0a184 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x04d80060 //?
WORD $0x04d80080 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e61d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffda4 //BMI -19(PC)
WORD $0xd65f03c0 //RET



TEXT ·_or_v6_sve(SB), $0-64
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD v6+48(FP), R6
MOVD size+56(FP), R7
WORD $0x25e71fe0 //?
WORD $0x54000385 //BPL 28(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x8b08008c //ADD R8, R4, R12
WORD $0xa5e0a183 //?
WORD $0x8b0800ac //ADD R8, R5, R12
WORD $0xa5e0a184 //?
WORD $0x8b0800cc //ADD R8, R6, R12
WORD $0xa5e0a185 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x04d80060 //?
WORD $0x04d80080 //?
WORD $0x04d800a0 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e71d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffd44 //BMI -22(PC)
WORD $0xd65f03c0 //RET




TEXT ·_or_optimized(SB), $0-32
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD info+24(FP), R3
WORD $0xd360fc68 //LSR $32, R3, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x54000281 //BNE 20(PC)
WORD $0x92407c68 //AND $4294967295, R3, R8
WORD $0x25e81fe0 //?
WORD $0x54000b25 //BPL 89(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x04d80020 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffec4 //BMI -10(PC)
WORD $0x14000049 //JMP 73(PC)
WORD $0x7100087f //CMPW $2, R3
WORD $0x54000163 //BCC 11(PC)
WORD $0xd3417c68 //UBFX $1, R3, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff61 //BNE -5(PC)
WORD $0x121f7868 //ANDW $4294967294, R3, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54000742 //BCS 58(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000069 //ORRW $1, R3, R9
WORD $0x4b090069 //SUBW R9, R3, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540005a3 //BCC 45(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000a //ADD R11, R0, R10
WORD $0x3200006c //ORRW $1, R3, R12
WORD $0x4b0c006c //SUBW R12, R3, R12
WORD $0x8b08018c //ADD R8, R12, R12
WORD $0xd37df18c //LSL $3, R12, R12
WORD $0x9100218c //ADD $8, R12, R12
WORD $0x8b0c000d //ADD R12, R0, R13
WORD $0x8b0b002e //ADD R11, R1, R14
WORD $0x8b0c002f //ADD R12, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0c004c //ADD R12, R2, R12
WORD $0xeb0f015f //CMP R15, R10
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x0a0e01ee //ANDW R14, R15, R14
WORD $0xeb0c015f //CMP R12, R10
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x370002ee //TBNZ $0, R14, 23(PC)
WORD $0x0a0c014a //ANDW R12, R10, R10
WORD $0x370002aa //TBNZ $0, R10, 21(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416d //ADD $16, R11, R13
WORD $0x8b0d002b //ADD R13, R1, R11
WORD $0x8b0d000c //ADD R13, R0, R12
WORD $0x8b0d004d //ADD R13, R2, R13
WORD $0xaa0a03ee //MOVD R10, R14
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100816b //ADD $32, R11, R11
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0xf10011ce //SUBS $4, R14, R14
WORD $0x54fffee1 //BNE -9(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000120 //BEQ 9(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xaa0a016a //ORR R10, R11, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54ffff23 //BCC -7(PC)
WORD $0xd65f03c0 //RET


TEXT ·_or_v3_optimized(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD info+32(FP),R4


WORD $0xd360fc88 //LSR $32, R4, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x540002e1 //BNE 23(PC)
WORD $0x92407c88 //AND $4294967295, R4, R8
WORD $0x25e81fe0 //?
WORD $0x54000de5 //BPL 111(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffe64 //BMI -13(PC)
WORD $0x1400005c //JMP 92(PC)
WORD $0x7100089f //CMPW $2, R4
WORD $0x540001e3 //BCC 15(PC)
WORD $0xd3417c88 //UBFX $1, R4, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff01 //BNE -8(PC)
WORD $0x121f7888 //ANDW $4294967294, R4, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54000922 //BCS 73(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000089 //ORRW $1, R4, R9
WORD $0x4b090089 //SUBW R9, R4, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000743 //BCC 58(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000c //ADD R11, R0, R12
WORD $0x3200008a //ORRW $1, R4, R10
WORD $0x4b0a008a //SUBW R10, R4, R10
WORD $0x8b08014a //ADD R8, R10, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a000e //ADD R10, R0, R14
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b0a002f //ADD R10, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0065 //ADD R11, R3, R5
WORD $0x8b0a0066 //ADD R10, R3, R6
WORD $0xeb0f019f //CMP R15, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e01bf //CMP R14, R13
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0x0a0d014f //ANDW R13, R10, R15
WORD $0xeb11019f //CMP R17, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e021f //CMP R14, R16
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb06019f //CMP R6, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb0e00bf //CMP R14, R5
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x370003cf //TBNZ $0, R15, 30(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x3700038a //TBNZ $0, R10, 28(PC)
WORD $0x0a0e018a //ANDW R14, R12, R10
WORD $0x3700034a //TBNZ $0, R10, 26(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416e //ADD $16, R11, R14
WORD $0x8b0e002b //ADD R14, R1, R11
WORD $0x8b0e000c //ADD R14, R0, R12
WORD $0x8b0e004d //ADD R14, R2, R13
WORD $0x8b0e006e //ADD R14, R3, R14
WORD $0xaa0a03ef //MOVD R10, R15
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0xf10011ef //SUBS $4, R15, R15
WORD $0x54fffe61 //BNE -13(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000160 //BEQ 11(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xf869686c //MOVD (R3)(R9), R12
WORD $0xaa0a016a //ORR R10, R11, R10
WORD $0xaa0c014a //ORR R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54fffee3 //BCC -9(PC)
WORD $0xd65f03c0 //RET


TEXT ·_or_v4_optimized(SB), $0-48
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD size+40(FP), R5
WORD $0xa9be57f6 //STP.W (R22, R21), -32(RSP)
WORD $0xa9014ff4 //STP (R20, R19), 16(RSP)
WORD $0xd360fca8 //LSR $32, R5, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x54000341 //BNE 26(PC)
WORD $0x92407ca8 //AND $4294967295, R5, R8
WORD $0x25e81fe0 //?
WORD $0x540010a5 //BPL 133(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x8b09008d //ADD R9, R4, R13
WORD $0xa5e0a1a3 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x04d80060 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffe04 //BMI -16(PC)
WORD $0x1400006f //JMP 111(PC)
WORD $0x710008bf //CMPW $2, R5
WORD $0x54000263 //BCC 19(PC)
WORD $0xd3417ca8 //UBFX $1, R5, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffea1 //BNE -11(PC)
WORD $0x121f78a8 //ANDW $4294967294, R5, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54000b02 //BCS 88(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000a9 //ORRW $1, R5, R9
WORD $0x4b0900a9 //SUBW R9, R5, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540008e3 //BCC 71(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000e //ADD R11, R0, R14
WORD $0x320000aa //ORRW $1, R5, R10
WORD $0x4b0a00aa //SUBW R10, R5, R10
WORD $0x8b08014a //ADD R8, R10, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0010 //ADD R10, R0, R16
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0066 //ADD R11, R3, R6
WORD $0x8b0a0067 //ADD R10, R3, R7
WORD $0x8b0b0093 //ADD R11, R4, R19
WORD $0x8b0a0094 //ADD R10, R4, R20
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb10019f //CMP R16, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0155 //ANDW R12, R10, R21
WORD $0xeb1101df //CMP R17, R14
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb1001ff //CMP R16, R15
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb1000df //CMP R16, R6
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb1401df //CMP R20, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb10027f //CMP R16, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0x370004b5 //TBNZ $0, R21, 37(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x3700046a //TBNZ $0, R10, 35(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x3700042a //TBNZ $0, R10, 33(PC)
WORD $0x0a1001ca //ANDW R16, R14, R10
WORD $0x370003ea //TBNZ $0, R10, 31(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416f //ADD $16, R11, R15
WORD $0x8b0f002b //ADD R15, R1, R11
WORD $0x8b0f000c //ADD R15, R0, R12
WORD $0x8b0f004d //ADD R15, R2, R13
WORD $0x8b0f008e //ADD R15, R4, R14
WORD $0x8b0f006f //ADD R15, R3, R15
WORD $0xaa0a03f0 //MOVD R10, R16
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100816b //ADD $32, R11, R11
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0xf1001210 //SUBS $4, R16, R16
WORD $0x54fffde1 //BNE -17(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x540001a0 //BEQ 13(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xaa0a016a //ORR R10, R11, R10
WORD $0xf869686b //MOVD (R3)(R9), R11
WORD $0xf869688c //MOVD (R4)(R9), R12
WORD $0xaa0b014a //ORR R11, R10, R10
WORD $0xaa0c014a //ORR R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b05011f //CMPW R5, R8
WORD $0x54fffea3 //BCC -11(PC)
WORD $0xa9414ff4 //LDP 16(RSP), (R20, R19)
WORD $0xa8c257f6 //LDP.P 32(RSP), (R22, R21)
WORD $0xd65f03c0 //RET


TEXT ·_or_v5_optimized(SB), $0-56
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD size+48(FP), R6
WORD $0xa9bd5ff8 //STP.W (R24, R23), -48(RSP)
WORD $0xa90157f6 //STP (R22, R21), 16(RSP)
WORD $0xa9024ff4 //STP (R20, R19), 32(RSP)
WORD $0xd360fcc8 //LSR $32, R6, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x540003a1 //BNE 29(PC)
WORD $0x92407cc8 //AND $4294967295, R6, R8
WORD $0x25e81fe0 //?
WORD $0x54001485 //BPL 164(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x8b09008d //ADD R9, R4, R13
WORD $0xa5e0a1a3 //?
WORD $0x8b0900ad //ADD R9, R5, R13
WORD $0xa5e0a1a4 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x04d80060 //?
WORD $0x04d80080 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffda4 //BMI -19(PC)
WORD $0x1400008b //JMP 139(PC)
WORD $0x710008df //CMPW $2, R6
WORD $0x540002e3 //BCC 23(PC)
WORD $0xd3417cc8 //UBFX $1, R6, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffe41 //BNE -14(PC)
WORD $0x121f78c8 //ANDW $4294967294, R6, R8
WORD $0x6b06011f //CMPW R6, R8
WORD $0x54000e02 //BCS 112(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000c9 //ORRW $1, R6, R9
WORD $0x4b0900c9 //SUBW R9, R6, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000a83 //BCC 84(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b0010 //ADD R11, R0, R16
WORD $0x320000ca //ORRW $1, R6, R10
WORD $0x4b0a00ca //SUBW R10, R6, R10
WORD $0x8b08014a //ADD R8, R10, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a0007 //ADD R10, R0, R7
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x8b0a002d //ADD R10, R1, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x8b0a004f //ADD R10, R2, R15
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b0a0073 //ADD R10, R3, R19
WORD $0x8b0b0094 //ADD R11, R4, R20
WORD $0x8b0a0095 //ADD R10, R4, R21
WORD $0x8b0b00b6 //ADD R11, R5, R22
WORD $0x8b0a00b7 //ADD R10, R5, R23
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb07019f //CMP R7, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c0158 //ANDW R12, R10, R24
WORD $0xeb0f021f //CMP R15, R16
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0701df //CMP R7, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb13021f //CMP R19, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb07023f //CMP R7, R17
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb07029f //CMP R7, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb17021f //CMP R23, R16
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb0702df //CMP R7, R22
WORD $0x1a9f27e7 //CSETW LO, R7
WORD $0x37000598 //TBNZ $0, R24, 44(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x3700054a //TBNZ $0, R10, 42(PC)
WORD $0x0a0f018a //ANDW R15, R12, R10
WORD $0x3700050a //TBNZ $0, R10, 40(PC)
WORD $0x0a1101ca //ANDW R17, R14, R10
WORD $0x370004ca //TBNZ $0, R10, 38(PC)
WORD $0x0a07020a //ANDW R7, R16, R10
WORD $0x3700048a //TBNZ $0, R10, 36(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x91004170 //ADD $16, R11, R16
WORD $0x8b10002b //ADD R16, R1, R11
WORD $0x8b10000c //ADD R16, R0, R12
WORD $0x8b10004d //ADD R16, R2, R13
WORD $0x8b1000ae //ADD R16, R5, R14
WORD $0x8b10006f //ADD R16, R3, R15
WORD $0x8b100090 //ADD R16, R4, R16
WORD $0xaa0a03f1 //MOVD R10, R17
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0xad7f8de2 //FLDPQ -16(R15), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad7f8e02 //FLDPQ -16(R16), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100816b //ADD $32, R11, R11
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x910081ef //ADD $32, R15, R15
WORD $0x91008210 //ADD $32, R16, R16
WORD $0xf1001231 //SUBS $4, R17, R17
WORD $0x54fffd61 //BNE -21(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000300 //BEQ 24(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df10f //LSL $3, R8, R15
WORD $0x8b0f000a //ADD R15, R0, R10
WORD $0x8b0f00ab //ADD R15, R5, R11
WORD $0x8b0f008c //ADD R15, R4, R12
WORD $0x8b0f006d //ADD R15, R3, R13
WORD $0x8b0f004e //ADD R15, R2, R14
WORD $0x8b0f002f //ADD R15, R1, R15
WORD $0xd37df130 //LSL $3, R9, R16
WORD $0xf87069f1 //MOVD (R15)(R16), R17
WORD $0xf87069c0 //MOVD (R14)(R16), R0
WORD $0xaa110011 //ORR R17, R0, R17
WORD $0xf87069a0 //MOVD (R13)(R16), R0
WORD $0xaa000231 //ORR R0, R17, R17
WORD $0xf8706980 //MOVD (R12)(R16), R0
WORD $0xaa000231 //ORR R0, R17, R17
WORD $0xf8706960 //MOVD (R11)(R16), R0
WORD $0xaa000231 //ORR R0, R17, R17
WORD $0xf8306951 //MOVD R17, (R10)(R16)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090110 //ADDW R9, R8, R16
WORD $0x6b06021f //CMPW R6, R16
WORD $0x54fffe43 //BCC -14(PC)
WORD $0xa9424ff4 //LDP 32(RSP), (R20, R19)
WORD $0xa94157f6 //LDP 16(RSP), (R22, R21)
WORD $0xa8c35ff8 //LDP.P 48(RSP), (R24, R23)
WORD $0xd65f03c0 //RET



TEXT ·_or_v6_optimized(SB), $0-64
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD v4+32(FP), R4
MOVD v5+40(FP), R5
MOVD v6+48(FP), R6
MOVD size+56(FP), R7
WORD $0xa9bb6ffc //STP.W (R28, R27), -80(RSP)
WORD $0xa90167fa //STP (R26, R25), 16(RSP)
WORD $0xa9025ff8 //STP (R24, R23), 32(RSP)
WORD $0xa90357f6 //STP (R22, R21), 48(RSP)
WORD $0xa9044ff4 //STP (R20, R19), 64(RSP)
WORD $0xd360fce8 //LSR $32, R7, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x54000401 //BNE 32(PC)
WORD $0x92407ce8 //AND $4294967295, R7, R8
WORD $0x25e81fe0 //?
WORD $0x54001825 //BPL 193(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x8b09008d //ADD R9, R4, R13
WORD $0xa5e0a1a3 //?
WORD $0x8b0900ad //ADD R9, R5, R13
WORD $0xa5e0a1a4 //?
WORD $0x8b0900cd //ADD R9, R6, R13
WORD $0xa5e0a1a5 //?
WORD $0x04d80020 //?
WORD $0x04d80040 //?
WORD $0x04d80060 //?
WORD $0x04d80080 //?
WORD $0x04d800a0 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffd44 //BMI -22(PC)
WORD $0x140000a5 //JMP 165(PC)
WORD $0x710008ff //CMPW $2, R7
WORD $0x54000363 //BCC 27(PC)
WORD $0xd3417ce8 //UBFX $1, R7, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0xaa0403ed //MOVD R4, R13
WORD $0xaa0503ee //MOVD R5, R14
WORD $0xaa0603ef //MOVD R6, R15
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105a1 //FMOVQ.P 16(R13), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105c1 //FMOVQ.P 16(R14), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc105e1 //FMOVQ.P 16(R15), F1
WORD $0x4ea01c20 //VORR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54fffde1 //BNE -17(PC)
WORD $0x121f78e8 //ANDW $4294967294, R7, R8
WORD $0x6b07011f //CMPW R7, R8
WORD $0x540010c2 //BCS 134(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x320000e9 //ORRW $1, R7, R9
WORD $0x4b0900ea //SUBW R9, R7, R10
WORD $0x71000d5f //CMPW $3, R10
WORD $0x54000ce3 //BCC 103(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0x8b090013 //ADD R9, R0, R19
WORD $0x320000eb //ORRW $1, R7, R11
WORD $0x4b0b00eb //SUBW R11, R7, R11
WORD $0x8b08016b //ADD R8, R11, R11
WORD $0xd37df16b //LSL $3, R11, R11
WORD $0x9100216b //ADD $8, R11, R11
WORD $0x8b0b0015 //ADD R11, R0, R21
WORD $0x8b09002c //ADD R9, R1, R12
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b09004e //ADD R9, R2, R14
WORD $0x8b0b004f //ADD R11, R2, R15
WORD $0x8b090070 //ADD R9, R3, R16
WORD $0x8b0b0071 //ADD R11, R3, R17
WORD $0x8b090094 //ADD R9, R4, R20
WORD $0x8b0b0096 //ADD R11, R4, R22
WORD $0x8b0900b7 //ADD R9, R5, R23
WORD $0x8b0b00b8 //ADD R11, R5, R24
WORD $0x8b0900d9 //ADD R9, R6, R25
WORD $0x8b0b00da //ADD R11, R6, R26
WORD $0xeb0d027f //CMP R13, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb15019f //CMP R21, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x0a0c017b //ANDW R12, R11, R27
WORD $0xeb0f027f //CMP R15, R19
WORD $0x1a9f27eb //CSETW LO, R11
WORD $0xeb1501df //CMP R21, R14
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb11027f //CMP R17, R19
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb15021f //CMP R21, R16
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb16027f //CMP R22, R19
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0xeb15029f //CMP R21, R20
WORD $0x1a9f27f1 //CSETW LO, R17
WORD $0xeb18027f //CMP R24, R19
WORD $0x1a9f27f0 //CSETW LO, R16
WORD $0xeb1502ff //CMP R21, R23
WORD $0x1a9f27f4 //CSETW LO, R20
WORD $0xeb1a027f //CMP R26, R19
WORD $0x1a9f27f3 //CSETW LO, R19
WORD $0xeb15033f //CMP R21, R25
WORD $0x1a9f27f5 //CSETW LO, R21
WORD $0x3700073b //TBNZ $0, R27, 57(PC)
WORD $0x0a0d016b //ANDW R13, R11, R11
WORD $0x370006eb //TBNZ $0, R11, 55(PC)
WORD $0x0a0f018b //ANDW R15, R12, R11
WORD $0x370006ab //TBNZ $0, R11, 53(PC)
WORD $0x0a1101cb //ANDW R17, R14, R11
WORD $0x3700066b //TBNZ $0, R11, 51(PC)
WORD $0x0a14020b //ANDW R20, R16, R11
WORD $0x3700062b //TBNZ $0, R11, 49(PC)
WORD $0x0a15026b //ANDW R21, R19, R11
WORD $0x370005eb //TBNZ $0, R11, 47(PC)
WORD $0x9100054a //ADD $1, R10, R10
WORD $0x927e794b //AND $8589934588, R10, R11
WORD $0x8b080168 //ADD R8, R11, R8
WORD $0x9100402c //ADD $16, R1, R12
WORD $0x9100404d //ADD $16, R2, R13
WORD $0x9100406e //ADD $16, R3, R14
WORD $0x9100408f //ADD $16, R4, R15
WORD $0xaa0503f0 //MOVD R5, R16
WORD $0xaa0603f1 //MOVD R6, R17
WORD $0xaa0003f3 //MOVD R0, R19
WORD $0xaa0b03f4 //MOVD R11, R20
WORD $0x8b090195 //ADD R9, R12, R21
WORD $0xad7f86a0 //FLDPQ -16(R21), (F0, F1)
WORD $0x8b0901b5 //ADD R9, R13, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4ea01c40 //VORR V0.B16, V2.B16, V0.B16
WORD $0x4ea11c61 //VORR V1.B16, V3.B16, V1.B16
WORD $0x8b0901d5 //ADD R9, R14, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x8b0901f5 //ADD R9, R15, R21
WORD $0xad7f8ea2 //FLDPQ -16(R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x8b090215 //ADD R9, R16, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x8b090235 //ADD R9, R17, R21
WORD $0xad400ea2 //FLDPQ (R21), (F2, F3)
WORD $0x4ea21c00 //VORR V2.B16, V0.B16, V0.B16
WORD $0x8b090275 //ADD R9, R19, R21
WORD $0x4ea31c21 //VORR V3.B16, V1.B16, V1.B16
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x91008273 //ADD $32, R19, R19
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x91008231 //ADD $32, R17, R17
WORD $0xad0006a0 //FSTPQ (F0, F1), (R21)
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x91008210 //ADD $32, R16, R16
WORD $0x910081ef //ADD $32, R15, R15
WORD $0xf1001294 //SUBS $4, R20, R20
WORD $0x54fffc01 //BNE -32(PC)
WORD $0xeb0b015f //CMP R11, R10
WORD $0x54000360 //BEQ 27(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0xd37df110 //LSL $3, R8, R16
WORD $0x8b10000a //ADD R16, R0, R10
WORD $0x8b1000cb //ADD R16, R6, R11
WORD $0x8b1000ac //ADD R16, R5, R12
WORD $0x8b10008d //ADD R16, R4, R13
WORD $0x8b10006e //ADD R16, R3, R14
WORD $0x8b10004f //ADD R16, R2, R15
WORD $0x8b100030 //ADD R16, R1, R16
WORD $0xd37df131 //LSL $3, R9, R17
WORD $0xf8716a00 //MOVD (R16)(R17), R0
WORD $0xf87169e1 //MOVD (R15)(R17), R1
WORD $0xaa000020 //ORR R0, R1, R0
WORD $0xf87169c1 //MOVD (R14)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf87169a1 //MOVD (R13)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf8716981 //MOVD (R12)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf8716961 //MOVD (R11)(R17), R1
WORD $0xaa010000 //ORR R1, R0, R0
WORD $0xf8316940 //MOVD R0, (R10)(R17)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x0b090111 //ADDW R9, R8, R17
WORD $0x6b07023f //CMPW R7, R17
WORD $0x54fffe03 //BCC -16(PC)
WORD $0xa9444ff4 //LDP 64(RSP), (R20, R19)
WORD $0xa94357f6 //LDP 48(RSP), (R22, R21)
WORD $0xa9425ff8 //LDP 32(RSP), (R24, R23)
WORD $0xa94167fa //LDP 16(RSP), (R26, R25)
WORD $0xa8c56ffc //LDP.P 80(RSP), (R28, R27)
WORD $0xd65f03c0 //RET


TEXT ·_xor_neon(SB), $0-32
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD size+24(FP),R3

WORD $0x7100087f //CMPW $2, R3
WORD $0x54000163 //BCC 11(PC)
WORD $0x53017c68 //LSRW $1, R3, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x6e201c20 //VEOR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff61 //BNE -5(PC)
WORD $0x121f7868 //ANDW $4294967294, R3, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54000742 //BCS 58(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000069 //ORRW $1, R3, R9
WORD $0x4b090069 //SUBW R9, R3, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540005a3 //BCC 45(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000a //ADD R11, R0, R10
WORD $0x8b09010c //ADD R9, R8, R12
WORD $0xd37df18c //LSL $3, R12, R12
WORD $0x9100218c //ADD $8, R12, R12
WORD $0x8b0c000d //ADD R12, R0, R13
WORD $0x8b0b002e //ADD R11, R1, R14
WORD $0x8b0c002f //ADD R12, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0c004c //ADD R12, R2, R12
WORD $0xeb0f015f //CMP R15, R10
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x0a0e01ee //ANDW R14, R15, R14
WORD $0xeb0c015f //CMP R12, R10
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x3700032e //TBNZ $0, R14, 25(PC)
WORD $0x0a0c014a //ANDW R12, R10, R10
WORD $0x370002ea //TBNZ $0, R10, 23(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004b //ADD R11, R2, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03ee //MOVD R10, R14
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x6e201c40 //VEOR V0.B16, V2.B16, V0.B16
WORD $0x6e211c61 //VEOR V1.B16, V3.B16, V1.B16
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf10011ce //SUBS $4, R14, R14
WORD $0x54fffee1 //BNE -9(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000120 //BEQ 9(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xca0a016a //EOR R10, R11, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54ffff23 //BCC -7(PC)
WORD $0xd65f03c0 //RET


TEXT ·_xor_v3_neon(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD size+32(FP),R4

WORD $0x7100089f //CMPW $2, R4
WORD $0x540001e3 //BCC 15(PC)
WORD $0x53017c88 //LSRW $1, R4, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x6e201c20 //VEOR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x6e201c20 //VEOR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff01 //BNE -8(PC)
WORD $0x121f7888 //ANDW $4294967294, R4, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54000942 //BCS 74(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000089 //ORRW $1, R4, R9
WORD $0x4b090089 //SUBW R9, R4, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000763 //BCC 59(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000c //ADD R11, R0, R12
WORD $0x8b09010a //ADD R9, R8, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a000e //ADD R10, R0, R14
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b0a002f //ADD R10, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0065 //ADD R11, R3, R5
WORD $0x8b0a0066 //ADD R10, R3, R6
WORD $0xeb0f019f //CMP R15, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e01bf //CMP R14, R13
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0x0a0d014f //ANDW R13, R10, R15
WORD $0xeb11019f //CMP R17, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e021f //CMP R14, R16
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb06019f //CMP R6, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb0e00bf //CMP R14, R5
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x3700042f //TBNZ $0, R15, 33(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x370003ea //TBNZ $0, R10, 31(PC)
WORD $0x0a0e018a //ANDW R14, R12, R10
WORD $0x370003aa //TBNZ $0, R10, 29(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x8b0b002c //ADD R11, R1, R12
WORD $0x9100418c //ADD $16, R12, R12
WORD $0x8b0b000d //ADD R11, R0, R13
WORD $0x910041ad //ADD $16, R13, R13
WORD $0x8b0b004e //ADD R11, R2, R14
WORD $0x910041ce //ADD $16, R14, R14
WORD $0x8b0b006b //ADD R11, R3, R11
WORD $0x9100416b //ADD $16, R11, R11
WORD $0xaa0a03ef //MOVD R10, R15
WORD $0xad7f8580 //FLDPQ -16(R12), (F0, F1)
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x6e201c40 //VEOR V0.B16, V2.B16, V0.B16
WORD $0x6e211c61 //VEOR V1.B16, V3.B16, V1.B16
WORD $0xad7f8d62 //FLDPQ -16(R11), (F2, F3)
WORD $0x6e221c00 //VEOR V2.B16, V0.B16, V0.B16
WORD $0x6e231c21 //VEOR V3.B16, V1.B16, V1.B16
WORD $0x9100818c //ADD $32, R12, R12
WORD $0xad3f85a0 //FSTPQ (F0, F1), -16(R13)
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xf10011ef //SUBS $4, R15, R15
WORD $0x54fffe61 //BNE -13(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000160 //BEQ 11(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xf869686c //MOVD (R3)(R9), R12
WORD $0xca0a016a //EOR R10, R11, R10
WORD $0xca0c014a //EOR R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54fffee3 //BCC -9(PC)
WORD $0xd65f03c0 //RET


TEXT ·_xor_sve(SB), $0-32
MOVD out+0(FP),  R0
MOVD v1+8(FP), R1
MOVD v2+16(FP), R2
MOVD size+24(FP),R3

WORD $0x25e31fe0 //?
WORD $0x54000205 //BPL 16(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x04d90020 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e31d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffec4 //BMI -10(PC)
WORD $0xd65f03c0 //RET



TEXT ·_xor_v3_sve(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD size+32(FP),R4


WORD $0x25e41fe0 //?
WORD $0x54000265 //BPL 19(PC)
WORD $0xd2800008 //MOVD $0, R8
WORD $0x04e0e3e9 //?
WORD $0x04bf502a //?
WORD $0xaa0903eb //MOVD R9, R11
WORD $0x8b08002c //ADD R8, R1, R12
WORD $0xa5e0a180 //?
WORD $0x8b08004c //ADD R8, R2, R12
WORD $0xa5e0a181 //?
WORD $0x8b08006c //ADD R8, R3, R12
WORD $0xa5e0a182 //?
WORD $0x04d90020 //?
WORD $0x04d90040 //?
WORD $0x8b08000c //ADD R8, R0, R12
WORD $0xe5e0e180 //?
WORD $0x25e41d60 //?
WORD $0x8b09016b //ADD R9, R11, R11
WORD $0x8b0a0108 //ADD R10, R8, R8
WORD $0x54fffe64 //BMI -13(PC)
WORD $0xd65f03c0 //RET


TEXT ·_xor_optimized(SB), $0-32
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD info+24(FP), R3

WORD $0xd360fc68 //LSR $32, R3, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x54000281 //BNE 20(PC)
WORD $0x92407c68 //AND $4294967295, R3, R8
WORD $0x25e81fe0 //?
WORD $0x54000b25 //BPL 89(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x04d90020 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffec4 //BMI -10(PC)
WORD $0x14000049 //JMP 73(PC)
WORD $0x7100087f //CMPW $2, R3
WORD $0x54000163 //BCC 11(PC)
WORD $0xd3417c68 //UBFX $1, R3, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x6e201c20 //VEOR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff61 //BNE -5(PC)
WORD $0x121f7868 //ANDW $4294967294, R3, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54000742 //BCS 58(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000069 //ORRW $1, R3, R9
WORD $0x4b090069 //SUBW R9, R3, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x540005a3 //BCC 45(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000a //ADD R11, R0, R10
WORD $0x3200006c //ORRW $1, R3, R12
WORD $0x4b0c006c //SUBW R12, R3, R12
WORD $0x8b08018c //ADD R8, R12, R12
WORD $0xd37df18c //LSL $3, R12, R12
WORD $0x9100218c //ADD $8, R12, R12
WORD $0x8b0c000d //ADD R12, R0, R13
WORD $0x8b0b002e //ADD R11, R1, R14
WORD $0x8b0c002f //ADD R12, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0c004c //ADD R12, R2, R12
WORD $0xeb0f015f //CMP R15, R10
WORD $0x1a9f27ef //CSETW LO, R15
WORD $0xeb0d01df //CMP R13, R14
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x0a0e01ee //ANDW R14, R15, R14
WORD $0xeb0c015f //CMP R12, R10
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0d021f //CMP R13, R16
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0x370002ee //TBNZ $0, R14, 23(PC)
WORD $0x0a0c014a //ANDW R12, R10, R10
WORD $0x370002aa //TBNZ $0, R10, 21(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416d //ADD $16, R11, R13
WORD $0x8b0d002b //ADD R13, R1, R11
WORD $0x8b0d000c //ADD R13, R0, R12
WORD $0x8b0d004d //ADD R13, R2, R13
WORD $0xaa0a03ee //MOVD R10, R14
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x6e201c40 //VEOR V0.B16, V2.B16, V0.B16
WORD $0x6e211c61 //VEOR V1.B16, V3.B16, V1.B16
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100816b //ADD $32, R11, R11
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0xf10011ce //SUBS $4, R14, R14
WORD $0x54fffee1 //BNE -9(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000120 //BEQ 9(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xca0a016a //EOR R10, R11, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b03011f //CMPW R3, R8
WORD $0x54ffff23 //BCC -7(PC)
WORD $0xd65f03c0 //RET



TEXT ·_xor_v3_optimized(SB), $0-40
MOVD out+0(FP), R0
MOVD v1+8(FP),  R1
MOVD v2+16(FP), R2
MOVD v3+24(FP), R3
MOVD info+32(FP),R4

WORD $0xd360fc88 //LSR $32, R4, R8
WORD $0xf1000d1f //CMP $3, R8
WORD $0x540002e1 //BNE 23(PC)
WORD $0x92407c88 //AND $4294967295, R4, R8
WORD $0x25e81fe0 //?
WORD $0x54000de5 //BPL 111(PC)
WORD $0xd2800009 //MOVD $0, R9
WORD $0x04e0e3ea //?
WORD $0x04bf502b //?
WORD $0xaa0a03ec //MOVD R10, R12
WORD $0x8b09002d //ADD R9, R1, R13
WORD $0xa5e0a1a0 //?
WORD $0x8b09004d //ADD R9, R2, R13
WORD $0xa5e0a1a1 //?
WORD $0x8b09006d //ADD R9, R3, R13
WORD $0xa5e0a1a2 //?
WORD $0x04d90020 //?
WORD $0x04d90040 //?
WORD $0x8b09000d //ADD R9, R0, R13
WORD $0xe5e0e1a0 //?
WORD $0x25e81d80 //?
WORD $0x8b0a018c //ADD R10, R12, R12
WORD $0x8b0b0129 //ADD R11, R9, R9
WORD $0x54fffe64 //BMI -13(PC)
WORD $0x1400005c //JMP 92(PC)
WORD $0x7100089f //CMPW $2, R4
WORD $0x540001e3 //BCC 15(PC)
WORD $0xd3417c88 //UBFX $1, R4, $31, R8
WORD $0xaa0103e9 //MOVD R1, R9
WORD $0xaa0203ea //MOVD R2, R10
WORD $0xaa0003eb //MOVD R0, R11
WORD $0xaa0303ec //MOVD R3, R12
WORD $0x3cc10520 //FMOVQ.P 16(R9), F0
WORD $0x3cc10541 //FMOVQ.P 16(R10), F1
WORD $0x6e201c20 //VEOR V0.B16, V1.B16, V0.B16
WORD $0x3d800160 //FMOVQ F0, (R11)
WORD $0x3cc10581 //FMOVQ.P 16(R12), F1
WORD $0x6e201c20 //VEOR V0.B16, V1.B16, V0.B16
WORD $0x3c810560 //FMOVQ.P F0, 16(R11)
WORD $0xf1000508 //SUBS $1, R8, R8
WORD $0x54ffff01 //BNE -8(PC)
WORD $0x121f7888 //ANDW $4294967294, R4, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54000922 //BCS 73(PC)
WORD $0x93407d08 //SXTW R8, R8
WORD $0x32000089 //ORRW $1, R4, R9
WORD $0x4b090089 //SUBW R9, R4, R9
WORD $0x71000d3f //CMPW $3, R9
WORD $0x54000743 //BCC 58(PC)
WORD $0xd37df10b //LSL $3, R8, R11
WORD $0x8b0b000c //ADD R11, R0, R12
WORD $0x3200008a //ORRW $1, R4, R10
WORD $0x4b0a008a //SUBW R10, R4, R10
WORD $0x8b08014a //ADD R8, R10, R10
WORD $0xd37df14a //LSL $3, R10, R10
WORD $0x9100214a //ADD $8, R10, R10
WORD $0x8b0a000e //ADD R10, R0, R14
WORD $0x8b0b002d //ADD R11, R1, R13
WORD $0x8b0a002f //ADD R10, R1, R15
WORD $0x8b0b0050 //ADD R11, R2, R16
WORD $0x8b0a0051 //ADD R10, R2, R17
WORD $0x8b0b0065 //ADD R11, R3, R5
WORD $0x8b0a0066 //ADD R10, R3, R6
WORD $0xeb0f019f //CMP R15, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e01bf //CMP R14, R13
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0x0a0d014f //ANDW R13, R10, R15
WORD $0xeb11019f //CMP R17, R12
WORD $0x1a9f27ea //CSETW LO, R10
WORD $0xeb0e021f //CMP R14, R16
WORD $0x1a9f27ed //CSETW LO, R13
WORD $0xeb06019f //CMP R6, R12
WORD $0x1a9f27ec //CSETW LO, R12
WORD $0xeb0e00bf //CMP R14, R5
WORD $0x1a9f27ee //CSETW LO, R14
WORD $0x370003cf //TBNZ $0, R15, 30(PC)
WORD $0x0a0d014a //ANDW R13, R10, R10
WORD $0x3700038a //TBNZ $0, R10, 28(PC)
WORD $0x0a0e018a //ANDW R14, R12, R10
WORD $0x3700034a //TBNZ $0, R10, 26(PC)
WORD $0x91000529 //ADD $1, R9, R9
WORD $0x927e792a //AND $8589934588, R9, R10
WORD $0x8b080148 //ADD R8, R10, R8
WORD $0x9100416e //ADD $16, R11, R14
WORD $0x8b0e002b //ADD R14, R1, R11
WORD $0x8b0e000c //ADD R14, R0, R12
WORD $0x8b0e004d //ADD R14, R2, R13
WORD $0x8b0e006e //ADD R14, R3, R14
WORD $0xaa0a03ef //MOVD R10, R15
WORD $0xad7f8560 //FLDPQ -16(R11), (F0, F1)
WORD $0xad7f8da2 //FLDPQ -16(R13), (F2, F3)
WORD $0x6e201c40 //VEOR V0.B16, V2.B16, V0.B16
WORD $0x6e211c61 //VEOR V1.B16, V3.B16, V1.B16
WORD $0xad7f8dc2 //FLDPQ -16(R14), (F2, F3)
WORD $0x6e221c00 //VEOR V2.B16, V0.B16, V0.B16
WORD $0x6e231c21 //VEOR V3.B16, V1.B16, V1.B16
WORD $0x9100816b //ADD $32, R11, R11
WORD $0xad3f8580 //FSTPQ (F0, F1), -16(R12)
WORD $0x9100818c //ADD $32, R12, R12
WORD $0x910081ad //ADD $32, R13, R13
WORD $0x910081ce //ADD $32, R14, R14
WORD $0xf10011ef //SUBS $4, R15, R15
WORD $0x54fffe61 //BNE -13(PC)
WORD $0xeb0a013f //CMP R10, R9
WORD $0x54000160 //BEQ 11(PC)
WORD $0xd37df109 //LSL $3, R8, R9
WORD $0xf869682a //MOVD (R1)(R9), R10
WORD $0xf869684b //MOVD (R2)(R9), R11
WORD $0xf869686c //MOVD (R3)(R9), R12
WORD $0xca0a016a //EOR R10, R11, R10
WORD $0xca0c014a //EOR R12, R10, R10
WORD $0xf829680a //MOVD R10, (R0)(R9)
WORD $0x91000508 //ADD $1, R8, R8
WORD $0x6b04011f //CMPW R4, R8
WORD $0x54fffee3 //BCC -9(PC)
WORD $0xd65f03c0 //RET
